[
  {
    "description": "complex schema from jsck benchmark without IDs in definitions",
    "schema": {
      "type": "array",
      "items": { "$ref": "#/definitions/transaction" },
      "minItems": 1,
      "definitions": {
        "base58": {
          "type": "string",
          "pattern": "^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+$"
        },
        "hex": {
          "type": "string",
          "pattern": "^[0123456789A-Fa-f]+$"
        },
        "tx_id": {
          "allOf": [
            { "$ref": "#/definitions/hex" },
            {
              "minLength": 64,
              "maxLength": 64
            }
          ]
        },
        "address": {
          "allOf": [
            { "$ref": "#/definitions/base58" },
            {
              "minLength": 34,
              "maxLength": 34
            }
          ]
        },
        "signature": {
          "allOf": [
            { "$ref": "#/definitions/hex" },
            {
              "minLength": 128,
              "maxLength": 128
            }
          ]
        },
        "transaction": {
          "additionalProperties": false,
          "required": [
            "metadata",
            "hash",
            "inputs",
            "outputs"
          ],
          "properties": {
            "metadata": {
              "type": "object",
              "required": [
                "amount",
                "fee"
              ],
              "properties": {
                "amount": {
                  "type": "integer"
                },
                "fee": {
                  "type": "integer",
                  "multipleOf": 10000
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "unsigned",
                    "unconfirmed",
                    "confirmed",
                    "invalid"
                  ]
                },
                "confirmations": {
                  "type": "integer",
                  "minimum": 0
                },
                "block_time": {
                  "type": "integer"
                }
              }
            },
            "version": {
              "type": "integer"
            },
            "lock_time": {
              "type": "integer"
            },
            "hash": { "$ref": "#/definitions/tx_id" },
            "inputs": {
              "type": "array",
              "items": { "$ref": "#/definitions/input" },
              "minItems": 1
            },
            "outputs": {
              "type": "array",
              "items": { "$ref": "#/definitions/output" },
              "minItems": 1
            }
          }
        },
        "input": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "index",
            "output",
            "script_sig"
          ],
          "properties": {
            "index": {
              "type": "integer",
              "minimum": 0
            },
            "output": { "$ref": "#/definitions/output" },
            "sig_hash": { "$ref": "#/definitions/hex" },
            "script_sig": { "$ref": "#/definitions/hex" },
            "signatures": {
              "type": "object",
              "description": "A dictionary of signatures.  Keys represent keypair names",
              "minProperties": 1,
              "maxProperties": 3,
              "additionalProperties": { "$ref": "#/definitions/signature" }
            }
          }
        },
        "output": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "hash",
            "index",
            "value",
            "script"
          ],
          "properties": {
            "hash": { "$ref": "#/definitions/tx_id" },
            "index": {
              "type": "integer",
              "minimum": 0
            },
            "value": {
              "type": "integer"
            },
            "script": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "enum": [
                    "standard",
                    "p2sh"
                  ]
                },
                "asm": {
                  "type": "string"
                }
              }
            },
            "address": { "$ref": "#/definitions/address" },
            "metadata": {
              "type": "object",
              "dependencies": {
                "wallet_path": [
                  "public_seeds"
                ]
              },
              "properties": {
                "wallet_path": {
                  "type": "string"
                },
                "public_seeds": {
                  "type": "object",
                  "minProperties": 1,
                  "maxProperties": 3,
                  "additionalProperties": {
                    "anyOf": [
                      { "$ref": "#/definitions/base58" },
                      { "$ref": "#/definitions/hex" }
                    ]
                  }
                }
              }
            }
          }
        }
      }
    },
    "tests": [
      {
        "description": "valid array from jsck benchmark",
        "data": [
          {
            "metadata": {
              "amount": 38043749285,
              "fee": 20000,
              "status": "confirmed",
              "confirmations": 73,
              "block_time": 1415993584376
            },
            "version": 1,
            "lock_time": 0,
            "hash": "60c1f1a3160042152114e2bba45600a5045711c3a8a458016248acec59653471",
            "inputs": [
              {
                "index": 0,
                "script_sig": "3046022100be69797cf5d784412b1258256eb657c191a04893479dfa2ae5c7f2088c7adbe0022100e6b000bd633b286ed1b9bc7682fe753d9fdad61fbe5da2a6e9444198e33a670f01",
                "signatures": {
                  "primary": "3046022100be69797cf5d784412b1258256eb657c191a04893479dfa2ae5c7f2088c7adbe0022100e6b000bd633b286ed1b9bc7682fe753d9fdad61fbe5da2a7",
                  "cosigner": "a2ad5ebf16dadf9d357ef2867cb9b1de682b336db000b6e0012200ebda7c8802f7c5ea2afd97439840a191c756be6528521b214487d5fc79796eb00122064037"
                },
                "output": {
                  "hash": "6b040cd7a4676b5c7b11f144e73c1958c177fcd79e934f6be8ce02c8cd12546d",
                  "index": 1,
                  "value": 38043749285,
                  "script": {
                    "type": "standard",
                    "asm": "OP_DUP OP_HASH160 7d4e6d55e1dffb0df85f509343451d170d147551 OP_EQUALVERIFY OP_CHECKSIG"
                  }
                }
              }
            ],
            "outputs": [
              {
                "hash": "60c1f1a3160042152114e2bba45600a5045711c3a8a458016248acec59653471",
                "index": 0,
                "value": 38042249285,
                "script": {
                  "type": "standard",
                  "asm": "OP_DUP OP_HASH160 7d4e6d55e1dffb0df85f509343451d170d147551 OP_EQUALVERIFY OP_CHECKSIG"
                },
                "address": "1CRZRBwfuwUaVSPJtd6DBuezbm7XPBHLa1",
                "metadata": {
                  "type": "change",
                  "wallet_path": "m/44/0/1/356",
                  "public_seeds": {
                    "primary": "xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8",
                    "cosigner": "xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8"
                  }
                }
              },
              {
                "hash": "60c1f1a3160042152114e2bba45600a5045711c3a8a458016248acec59653471",
                "index": 1,
                "value": 1500000,
                "script": {
                  "type": "standard",
                  "asm": "OP_DUP OP_HASH160 3bc576e6960a9d45201ba5087e39224d0a05a079 OP_EQUALVERIFY OP_CHECKSIG"
                },
                "address": "16T3RPZLmxtXQCgWi1S8kef5Ca6jqXhoeT"
              }
            ]
          },
          {
            "metadata": {
              "amount": 38043749285,
              "fee": 20000,
              "status": "unconfirmed",
              "confirmations": 73,
              "block_time": 1415993584376
            },
            "version": 1,
            "lock_time": 0,
            "hash": "60c1f1a3160042152114e2bba45600a5045711c3a8a458016248acec59653471",
            "inputs": [
              {
                "index": 0,
                "script_sig": "3046022100be69797cf5d784412b1258256eb657c191a04893479dfa2ae5c7f2088c7adbe0022100e6b000bd633b286ed1b9bc7682fe753d9fdad61fbe5da2a6e9444198e33a670f01",
                "output": {
                  "hash": "6b040cd7a4676b5c7b11f144e73c1958c177fcd79e934f6be8ce02c8cd12546d",
                  "index": 1,
                  "value": 38043749285,
                  "script": {
                    "type": "standard",
                    "asm": "OP_DUP OP_HASH160 7d4e6d55e1dffb0df85f509343451d170d147551 OP_EQUALVERIFY OP_CHECKSIG"
                  }
                }
              }
            ],
            "outputs": [
              {
                "hash": "60c1f1a3160042152114e2bba45600a5045711c3a8a458016248acec59653471",
                "index": 0,
                "value": 38042249285,
                "script": {
                  "type": "standard",
                  "asm": "OP_DUP OP_HASH160 7d4e6d55e1dffb0df85f509343451d170d147551 OP_EQUALVERIFY OP_CHECKSIG"
                },
                "address": "1CRZRBwfuwUaVSPJtd6DBuezbm7XPBHLa1",
                "metadata": {
                  "type": "change"
                }
              },
              {
                "hash": "60c1f1a3160042152114e2bba45600a5045711c3a8a458016248acec59653471",
                "index": 1,
                "value": 1500000,
                "script": {
                  "type": "standard",
                  "asm": "OP_DUP OP_HASH160 3bc576e6960a9d45201ba5087e39224d0a05a079 OP_EQUALVERIFY OP_CHECKSIG"
                },
                "address": "16T3RPZLmxtXQCgWi1S8kef5Ca6jqXhoeT"
              }
            ]
          },
          {
            "metadata": {
              "amount": 38043749285,
              "fee": 20000,
              "status": "unconfirmed",
              "confirmations": 73,
              "block_time": 1415993584376
            },
            "version": 1,
            "lock_time": 0,
            "hash": "60c1f1a3160042152114e2bba45600a5045711c3a8a458016248acec59653471",
            "inputs": [
              {
                "index": 0,
                "script_sig": "3046022100be69797cf5d784412b1258256eb657c191a04893479dfa2ae5c7f2088c7adbe0022100e6b000bd633b286ed1b9bc7682fe753d9fdad61fbe5da2a6e9444198e33a670f01",
                "output": {
                  "hash": "6b040cd7a4676b5c7b11f144e73c1958c177fcd79e934f6be8ce02c8cd12546d",
                  "index": 1,
                  "value": 38043749285,
                  "script": {
                    "type": "standard",
                    "asm": "OP_DUP OP_HASH160 7d4e6d55e1dffb0df85f509343451d170d147551 OP_EQUALVERIFY OP_CHECKSIG"
                  }
                }
              }
            ],
            "outputs": [
              {
                "hash": "60c1f1a3160042152114e2bba45600a5045711c3a8a458016248acec59653471",
                "index": 0,
                "value": 38042249285,
                "script": {
                  "type": "standard",
                  "asm": "OP_DUP OP_HASH160 7d4e6d55e1dffb0df85f509343451d170d147551 OP_EQUALVERIFY OP_CHECKSIG"
                },
                "address": "1CRZRBwfuwUaVSPJtd6DBuezbm7XPBHLa1",
                "metadata": {
                  "type": "change"
                }
              },
              {
                "hash": "60c1f1a3160042152114e2bba45600a5045711c3a8a458016248acec59653471",
                "index": 1,
                "value": 1500000,
                "script": {
                  "type": "standard",
                  "asm": "OP_DUP OP_HASH160 3bc576e6960a9d45201ba5087e39224d0a05a079 OP_EQUALVERIFY OP_CHECKSIG"
                },
                "address": "16T3RPZLmxtXQCgWi1S8kef5Ca6jqXhoeT"
              }
            ]
          }
        ],
        "valid": true
      },
      {
        "description": "not array",
        "data": 1,
        "valid": false
      },
      {
        "description": "one valid item",
        "data": [
          {
            "metadata": {
              "amount": 38043749285,
              "fee": 20000,
              "status": "unconfirmed",
              "confirmations": 73,
              "block_time": 1415993584376
            },
            "version": 1,
            "lock_time": 0,
            "hash": "60c1f1a3160042152114e2bba45600a5045711c3a8a458016248acec59653471",
            "inputs": [
              {
                "index": 0,
                "script_sig": "3046022100be69797cf5d784412b1258256eb657c191a04893479dfa2ae5c7f2088c7adbe0022100e6b000bd633b286ed1b9bc7682fe753d9fdad61fbe5da2a6e9444198e33a670f01",
                "output": {
                  "hash": "6b040cd7a4676b5c7b11f144e73c1958c177fcd79e934f6be8ce02c8cd12546d",
                  "index": 1,
                  "value": 38043749285,
                  "script": {
                    "type": "standard",
                    "asm": "OP_DUP OP_HASH160 7d4e6d55e1dffb0df85f509343451d170d147551 OP_EQUALVERIFY OP_CHECKSIG"
                  }
                }
              }
            ],
            "outputs": [
              {
                "hash": "60c1f1a3160042152114e2bba45600a5045711c3a8a458016248acec59653471",
                "index": 0,
                "value": 38042249285,
                "script": {
                  "type": "standard",
                  "asm": "OP_DUP OP_HASH160 7d4e6d55e1dffb0df85f509343451d170d147551 OP_EQUALVERIFY OP_CHECKSIG"
                },
                "address": "1CRZRBwfuwUaVSPJtd6DBuezbm7XPBHLa1",
                "metadata": {
                  "type": "change"
                }
              },
              {
                "hash": "60c1f1a3160042152114e2bba45600a5045711c3a8a458016248acec59653471",
                "index": 1,
                "value": 1500000,
                "script": {
                  "type": "standard",
                  "asm": "OP_DUP OP_HASH160 3bc576e6960a9d45201ba5087e39224d0a05a079 OP_EQUALVERIFY OP_CHECKSIG"
                },
                "address": "16T3RPZLmxtXQCgWi1S8kef5Ca6jqXhoeT"
              }
            ]
          }
        ],
        "valid": true
      },
      {
        "description": "one invalid item",
        "data": [
          {
            "metadata": {
              "amount": 38043749285,
              "fee": 20000,
              "status": "unconfirmed",
              "confirmations": 73,
              "block_time": 1415993584376
            },
            "version": 1,
            "lock_time": 0,
            "hash": "$_is_invalid",
            "inputs": [
              {
                "index": 0,
                "script_sig": "3046022100be69797cf5d784412b1258256eb657c191a04893479dfa2ae5c7f2088c7adbe0022100e6b000bd633b286ed1b9bc7682fe753d9fdad61fbe5da2a6e9444198e33a670f01",
                "output": {
                  "hash": "6b040cd7a4676b5c7b11f144e73c1958c177fcd79e934f6be8ce02c8cd12546d",
                  "index": 1,
                  "value": 38043749285,
                  "script": {
                    "type": "standard",
                    "asm": "OP_DUP OP_HASH160 7d4e6d55e1dffb0df85f509343451d170d147551 OP_EQUALVERIFY OP_CHECKSIG"
                  }
                }
              }
            ],
            "outputs": [
              {
                "hash": "60c1f1a3160042152114e2bba45600a5045711c3a8a458016248acec59653471",
                "index": 0,
                "value": 38042249285,
                "script": {
                  "type": "standard",
                  "asm": "OP_DUP OP_HASH160 7d4e6d55e1dffb0df85f509343451d170d147551 OP_EQUALVERIFY OP_CHECKSIG"
                },
                "address": "1CRZRBwfuwUaVSPJtd6DBuezbm7XPBHLa1",
                "metadata": {
                  "type": "change"
                }
              },
              {
                "hash": "60c1f1a3160042152114e2bba45600a5045711c3a8a458016248acec59653471",
                "index": 1,
                "value": 1500000,
                "script": {
                  "type": "standard",
                  "asm": "OP_DUP OP_HASH160 3bc576e6960a9d45201ba5087e39224d0a05a079 OP_EQUALVERIFY OP_CHECKSIG"
                },
                "address": "16T3RPZLmxtXQCgWi1S8kef5Ca6jqXhoeT"
              }
            ]
          }
        ],
        "valid": false
      }
    ]
  }
]
